/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.isd.venta.modelo;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import com.isd.global.modelo.Moneda;

/**
 *
 * @author Claudio
 */
@Entity
@Table(name = "VTRMVC", schema = "dbo")
public class AplicacionCuentaCorriente implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected AplicacionCuentaCorrientePK aplicacionCuentaCorrientePK;
    
    //Fecha del movimiento
    @Column(name = "VTRMVC_FCHMOV")
    @Temporal(TemporalType.DATE)
    private Date fchmov;

    //Cliente
    @JoinColumn(name = "VTRMVC_NROCTA", referencedColumnName = "VTMCLH_NROCTA", nullable = false, insertable=false, updatable=false)
    @ManyToOne(optional = false)
    private Cliente cliente;

    //Código de subcuenta
    @Column(name = "VTRMVC_NROSUB", length = 13)
    private String nrosub;
    
    //Código de imputación
    @Column(name = "VTRMVC_IMPTCN", length = 6)
    private String imptcn;

    //Importe de la cuota en moneda nacional
    @Column(name = "VTRMVC_IMPNAC", precision = 18, scale = 2)
    private BigDecimal impnac;

    //Importe de la cuota expresado en moneda extranjera
    @Column(name = "VTRMVC_IMPEXT", precision = 18, scale = 2)
    private BigDecimal impext;

    //Fecha de vencimiento de la cuota
    @Column(name = "VTRMVC_FCHVNC")
    @Temporal(TemporalType.DATE)
    private Date fchvnc;
    //Texto asociado
    @Lob
    @Column(name = "VTRMVC_TEXTOS", length = 2147483647)
    private String textos;
    //Coeficiente de registracion
    @JoinColumn(name = "VTRMVC_COFLIS", referencedColumnName = "GRTCOF_CODCOF", nullable = false, insertable=false, updatable=false)
    @ManyToOne
    private Moneda coeficienteRegistracion;
    //Cambio de la operación
    @Column(name = "VTRMVC_CAMBIO", precision = 20, scale = 8)
    private BigDecimal cambio;
    //Coeficiente de emisión
    @JoinColumn(name = "VTRMVC_COFFAC", referencedColumnName = "GRTCOF_CODCOF", nullable = false, insertable=false, updatable=false)
    @ManyToOne
    private Moneda coeficienteEmision;
    //Coeficiente de deuda
    @JoinColumn(name = "VTRMVC_COFDEU", referencedColumnName = "GRTCOF_CODCOF", nullable = false, insertable=false, updatable=false)
    @ManyToOne
    private Moneda coeficienteDeuda;

    //Fecha de interés	
    @Column(name = "VTRMVC_FCHINT")
    @Temporal(TemporalType.DATE)
    private Date fchint;

    //Importe de la cuota expresado en moneda extranjera
    @Column(name = "VTRMVC_IMPUSS", precision = 18, scale = 2)
    private BigDecimal impuss;
    
    //Cambio
    @Column(name = "VTRMVC_CAMUSS", precision = 20, scale = 8)
    private BigDecimal camuss;

    //Observaciones para el Número de Recibo de Factura Original
    @Column(name = "VTRMVC_OBSIMP", length = 60)
    private String obsimp;

    //Importe en moneda secundaria
    @Column(name = "VTRMVC_IMPSEC", precision = 18, scale = 2)
    private BigDecimal impsec;

    //Codigo de barra
    @Column(name = "VTRMVC_CODBAR", length = 120)
    private String codbar;
    
    
    @Column(name = "VTRMVC_DEBAJA")
    private Character debaja;
    

    public AplicacionCuentaCorriente() {
    }

    public AplicacionCuentaCorriente(AplicacionCuentaCorrientePK aplicacionCuentaCorrientePK) {
        this.aplicacionCuentaCorrientePK = aplicacionCuentaCorrientePK;
    }

    public AplicacionCuentaCorriente(String vtrmvcModfor, String vtrmvcCodfor, int vtrmvcNrofor, String vtrmvcModapl, String vtrmvcCodapl, int vtrmvcNroapl, short vtrmvcCuotas, String vtrmvcClamov) {
        this.aplicacionCuentaCorrientePK = new AplicacionCuentaCorrientePK(vtrmvcModfor, vtrmvcCodfor, vtrmvcNrofor, vtrmvcModapl, vtrmvcCodapl, vtrmvcNroapl, vtrmvcCuotas, vtrmvcClamov);
    }

    public AplicacionCuentaCorrientePK getAplicacionCuentaCorrientePK() {
        return aplicacionCuentaCorrientePK;
    }

    public void setAplicacionCuentaCorrientePK(AplicacionCuentaCorrientePK aplicacionCuentaCorrientePK) {
        this.aplicacionCuentaCorrientePK = aplicacionCuentaCorrientePK;
    }
    
    public BigDecimal getCambio() {
        return cambio;
    }

    public void setCambio(BigDecimal cambio) {
        this.cambio = cambio;
    }

    public BigDecimal getCamuss() {
        return camuss;
    }

    public void setCamuss(BigDecimal camuss) {
        this.camuss = camuss;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public String getCodbar() {
        return codbar;
    }

    public void setCodbar(String codbar) {
        this.codbar = codbar;
    }

    public Moneda getCoeficienteDeuda() {
        return coeficienteDeuda;
    }

    public void setCoeficienteDeuda(Moneda coeficienteDeuda) {
        this.coeficienteDeuda = coeficienteDeuda;
    }

    public Moneda getCoeficienteEmision() {
        return coeficienteEmision;
    }

    public void setCoeficienteEmision(Moneda coeficienteEmision) {
        this.coeficienteEmision = coeficienteEmision;
    }

    public Moneda getCoeficienteRegistracion() {
        return coeficienteRegistracion;
    }

    public void setCoeficienteRegistracion(Moneda coeficienteRegistracion) {
        this.coeficienteRegistracion = coeficienteRegistracion;
    }

    public Character getDebaja() {
        return debaja;
    }

    public void setDebaja(Character debaja) {
        this.debaja = debaja;
    }

    public Date getFchint() {
        return fchint;
    }

    public void setFchint(Date fchint) {
        this.fchint = fchint;
    }

    public Date getFchmov() {
        return fchmov;
    }

    public void setFchmov(Date fchmov) {
        this.fchmov = fchmov;
    }

    public Date getFchvnc() {
        return fchvnc;
    }

    public void setFchvnc(Date fchvnc) {
        this.fchvnc = fchvnc;
    }

    public BigDecimal getImpext() {
        return impext;
    }

    public void setImpext(BigDecimal impext) {
        this.impext = impext;
    }

    public BigDecimal getImpnac() {
        return impnac;
    }

    public void setImpnac(BigDecimal impnac) {
        this.impnac = impnac;
    }

    public BigDecimal getImpsec() {
        return impsec;
    }

    public void setImpsec(BigDecimal impsec) {
        this.impsec = impsec;
    }

    public String getImptcn() {
        return imptcn;
    }

    public void setImptcn(String imptcn) {
        this.imptcn = imptcn;
    }

    public BigDecimal getImpuss() {
        return impuss;
    }

    public void setImpuss(BigDecimal impuss) {
        this.impuss = impuss;
    }

    public String getNrosub() {
        return nrosub;
    }

    public void setNrosub(String nrosub) {
        this.nrosub = nrosub;
    }

    public String getObsimp() {
        return obsimp;
    }

    public void setObsimp(String obsimp) {
        this.obsimp = obsimp;
    }

    public String getTextos() {
        return textos;
    }

    public void setTextos(String textos) {
        this.textos = textos;
    }

    

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (aplicacionCuentaCorrientePK != null ? aplicacionCuentaCorrientePK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof AplicacionCuentaCorriente)) {
            return false;
        }
        AplicacionCuentaCorriente other = (AplicacionCuentaCorriente) object;
        if ((this.aplicacionCuentaCorrientePK == null && other.aplicacionCuentaCorrientePK != null) || (this.aplicacionCuentaCorrientePK != null && !this.aplicacionCuentaCorrientePK.equals(other.aplicacionCuentaCorrientePK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "tv.venta.modelo.AplicacionCuentaCorriente[aplicacionCuentaCorrientePK=" + aplicacionCuentaCorrientePK + "]";
    }

}
